class Solution {
public:
  int findUnsortedSubarray(vector<int>& nums) {

    if(nums.size() == 1){
      return 0;
    }

    int ans = 0;
    int start = nums.size() - 1, end = 0;
    int M, m;

    for(int i = 0; i < nums.size(); ++i){
      if(i == 0){
        M = nums.at(i);
        continue;
      }
      if(M > nums[i]){
        end = i;
      }else{
        M = nums[i];
      }
    }

    for(int i = nums.size() - 1; i >= 0; --i){
      if(i == nums.size() - 1){
        m = nums.at(i);
        continue;
      }
      if(m < nums.at(i)){
        start = i;
      }else{
        m = nums.at(i);
      }
    }

    return max(0, end - start + 1);

  }
};